#!/usr/bin/env python
# -*- coding:utf-8 -*-

import threading    #导入线程模块
import time
from Queue import Queue     #导入Queue队列，查看源码发现Queue是一个类。
obj = Queue()        #类实例化队列

print 'thread start'
#show函数传入两个参数,这里i代表线程,obj代表实例化队列
def show(i,obj):
  while True:
    #obj.get()   #调用实例化队列的get方法,取一条数据.没有取到数据的话会阻塞,这里会取到下面for循环写入的数据

    import paramiko
    transport = paramiko.Transport((obj.get(), 22))
    transport.connect(username='root', password='homevv123')

    ssh = paramiko.SSHClient()
    ssh._transport = transport
    #优化你需要进行的操作
    stdin, stdout, stderr = ssh.exec_command('hostname')
    print stdout.read()

    transport.close()

    time.sleep(5)
    obj.task_done() #每次从queue中get一个数据之后，当处理好相关问题，最后调用该方法，以提示q.join()是否停止阻塞，让线程向前执行或者退出；


#将列表中的IP地址写入QUEUE组
#obj.put('192.168.100.87')
V = ['192.168.100.87','192.168.100.84']
for x in V:
    obj.put(x)

#创建5个线程 
for i in range(5):
  time.sleep(1) #线程执行python内部调用有自己的算法,顺序会乱,这里我设置1s的等待时间就不会乱了.注意：这里可以使用线程锁来解决乱序的问题
  worker=threading.Thread(target=show,args=(i,obj))
  worker.setDaemon(True)    #设置为后台线程
  worker.start()
obj.join()  #逐个执行每个线程，执行完毕后继续往下执行

print 'thread stop'